gusucode.com > 《MATLAB图像与视频处理实用案例详解》代码 > 《MATLAB图像与视频处理实用案例详解》代码/第 04 章 基于Hough变化的答题卡识别/Analysis.m

    function [Dom, Aom, Answer, Bn] = Analysis(stats1, stats2, Line, Img, flag)

if nargin < 5
    flag = 1;
end
Line1 = Line{1};
Line2 = Line{2};
Line3 = Line{3};
Line4 = Line{4};
yn1 = round(Line1(1, 2) + 0.18*(Line2(1, 2)-Line1(1, 2)));
yn2 = round(Line1(1, 2) + 0.34*(Line2(1, 2)-Line1(1, 2)));
yn3 = round(Line1(1, 2) + 0.50*(Line2(1, 2)-Line1(1, 2)));
Linen1_1 = [Line1(1, 1) yn1; Line1(2, 1) yn1];
Linen2_1 = [Line1(1, 1) yn2; Line1(2, 1) yn2];
Linen3_1 = [Line1(1, 1) yn3; Line1(2, 1) yn3];
% 定位竖直网格分割线
xn1 = round(Line3(1, 1) + 0.22*(Line4(1, 1)-Line3(1, 1)));
xn2 = round(Line3(1, 1) + 0.26*(Line4(1, 1)-Line3(1, 1)));
xn3 = round(Line3(1, 1) + 0.48*(Line4(1, 1)-Line3(1, 1)));
xn4 = round(Line3(1, 1) + 0.52*(Line4(1, 1)-Line3(1, 1)));
xn5 = round(Line3(1, 1) + 0.73*(Line4(1, 1)-Line3(1, 1)));
xn6 = round(Line3(1, 1) + 0.77*(Line4(1, 1)-Line3(1, 1)));
xn7 = round(Line3(1, 1) + 0.98*(Line4(1, 1)-Line3(1, 1)));

Linen1_2 = [xn1 Line3(1, 2); xn1 Line3(2, 2)];
Linen2_2 = [xn2 Line3(1, 2); xn2 Line3(2, 2)];
Linen3_2 = [xn3 Line3(1, 2); xn3 Line3(2, 2)];
Linen4_2 = [xn4 Line3(1, 2); xn4 Line3(2, 2)];
Linen5_2 = [xn5 Line3(1, 2); xn5 Line3(2, 2)];
Linen6_2 = [xn6 Line3(1, 2); xn6 Line3(2, 2)];
Linen7_2 = [xn7 Line3(1, 2); xn7 Line3(2, 2)];
ym1_1 = round(Line1(1, 2) + 0.32*(Linen1_1(1, 2)-Line1(1, 2)));
ym2_1 = round(Line1(1, 2) + 0.5*(Linen1_1(1, 2)-Line1(1, 2)));
ym3_1 = round(Line1(1, 2) + 0.65*(Linen1_1(1, 2)-Line1(1, 2)));
ym4_1 = round(Line1(1, 2) + 0.80*(Linen1_1(1, 2)-Line1(1, 2)));
ym5_1 = round(Line1(1, 2) + 0.95*(Linen1_1(1, 2)-Line1(1, 2)));
Linem1_1 = [Line1(1, 1) ym1_1; Line1(2, 1) ym1_1];
Linem2_1 = [Line1(1, 1) ym2_1; Line1(2, 1) ym2_1];
Linem3_1 = [Line1(1, 1) ym3_1; Line1(2, 1) ym3_1];
Linem4_1 = [Line1(1, 1) ym4_1; Line1(2, 1) ym4_1];
Linem5_1 = [Line1(1, 1) ym5_1; Line1(2, 1) ym5_1];

ym1_2 = round(Linen1_1(1, 2) + 0.25*(Linen2_1(1, 2)-Linen1_1(1, 2)));
ym2_2 = round(Linen1_1(1, 2) + 0.40*(Linen2_1(1, 2)-Linen1_1(1, 2)));
ym3_2 = round(Linen1_1(1, 2) + 0.60*(Linen2_1(1, 2)-Linen1_1(1, 2)));
ym4_2 = round(Linen1_1(1, 2) + 0.75*(Linen2_1(1, 2)-Linen1_1(1, 2)));
ym5_2 = round(Linen1_1(1, 2) + 0.90*(Linen2_1(1, 2)-Linen1_1(1, 2)));
Linem1_2 = [Line1(1, 1) ym1_2; Line1(2, 1) ym1_2];
Linem2_2 = [Line1(1, 1) ym2_2; Line1(2, 1) ym2_2];
Linem3_2 = [Line1(1, 1) ym3_2; Line1(2, 1) ym3_2];
Linem4_2 = [Line1(1, 1) ym4_2; Line1(2, 1) ym4_2];
Linem5_2 = [Line1(1, 1) ym5_2; Line1(2, 1) ym5_2];

ym1_3 = round(Linen2_1(1, 2) + 0.25*(Linen3_1(1, 2)-Linen2_1(1, 2)));
ym2_3 = round(Linen2_1(1, 2) + 0.40*(Linen3_1(1, 2)-Linen2_1(1, 2)));
ym3_3 = round(Linen2_1(1, 2) + 0.60*(Linen3_1(1, 2)-Linen2_1(1, 2)));
ym4_3 = round(Linen2_1(1, 2) + 0.75*(Linen3_1(1, 2)-Linen2_1(1, 2)));
ym5_3 = round(Linen2_1(1, 2) + 0.90*(Linen3_1(1, 2)-Linen2_1(1, 2)));
Linem1_3 = [Line1(1, 1) ym1_3; Line1(2, 1) ym1_3];
Linem2_3 = [Line1(1, 1) ym2_3; Line1(2, 1) ym2_3];
Linem3_3 = [Line1(1, 1) ym3_3; Line1(2, 1) ym3_3];
Linem4_3 = [Line1(1, 1) ym4_3; Line1(2, 1) ym4_3];
Linem5_3 = [Line1(1, 1) ym5_3; Line1(2, 1) ym5_3];
xm1_1 = round(Line3(1, 1) + 0.07*(Linen1_2(1, 1)-Line3(1, 1)));
xm1_2 = round(Line3(1, 1) + 0.25*(Linen1_2(1, 1)-Line3(1, 1)));
xm1_3 = round(Line3(1, 1) + 0.43*(Linen1_2(1, 1)-Line3(1, 1)));
xm1_4 = round(Line3(1, 1) + 0.63*(Linen1_2(1, 1)-Line3(1, 1)));
xm1_5 = round(Line3(1, 1) + 0.83*(Linen1_2(1, 1)-Line3(1, 1)));
xm1_6 = round(Line3(1, 1) + 1.02*(Linen1_2(1, 1)-Line3(1, 1)));

Linem1_1_2 = [xm1_1 Line3(1, 2); xm1_1 Line3(2, 2)];
Linem1_2_2 = [xm1_2 Line3(1, 2); xm1_2 Line3(2, 2)];
Linem1_3_2 = [xm1_3 Line3(1, 2); xm1_3 Line3(2, 2)];
Linem1_4_2 = [xm1_4 Line3(1, 2); xm1_4 Line3(2, 2)];
Linem1_5_2 = [xm1_5 Line3(1, 2); xm1_5 Line3(2, 2)];
Linem1_6_2 = [xm1_6 Line3(1, 2); xm1_6 Line3(2, 2)];

xm2_1 = round(Linen2_2(1, 1) + 0.05*(Linen3_2(1, 1)-Linen2_2(1, 1)));
xm2_2 = round(Linen2_2(1, 1) + 0.22*(Linen3_2(1, 1)-Linen2_2(1, 1)));
xm2_3 = round(Linen2_2(1, 1) + 0.41*(Linen3_2(1, 1)-Linen2_2(1, 1)));
xm2_4 = round(Linen2_2(1, 1) + 0.58*(Linen3_2(1, 1)-Linen2_2(1, 1)));
xm2_5 = round(Linen2_2(1, 1) + 0.78*(Linen3_2(1, 1)-Linen2_2(1, 1)));
xm2_6 = round(Linen2_2(1, 1) + 0.98*(Linen3_2(1, 1)-Linen2_2(1, 1)));


Linem2_1_2 = [xm2_1 Line3(1, 2); xm2_1 Line3(2, 2)];
Linem2_2_2 = [xm2_2 Line3(1, 2); xm2_2 Line3(2, 2)];
Linem2_3_2 = [xm2_3 Line3(1, 2); xm2_3 Line3(2, 2)];
Linem2_4_2 = [xm2_4 Line3(1, 2); xm2_4 Line3(2, 2)];
Linem2_5_2 = [xm2_5 Line3(1, 2); xm2_5 Line3(2, 2)];
Linem2_6_2 = [xm2_6 Line3(1, 2); xm2_6 Line3(2, 2)];

xm3_1 = round(Linen4_2(1, 1) + 0.03*(Linen5_2(1, 1)-Linen4_2(1, 1)));
xm3_2 = round(Linen4_2(1, 1) + 0.22*(Linen5_2(1, 1)-Linen4_2(1, 1)));
xm3_3 = round(Linen4_2(1, 1) + 0.41*(Linen5_2(1, 1)-Linen4_2(1, 1)));
xm3_4 = round(Linen4_2(1, 1) + 0.58*(Linen5_2(1, 1)-Linen4_2(1, 1)));
xm3_5 = round(Linen4_2(1, 1) + 0.78*(Linen5_2(1, 1)-Linen4_2(1, 1)));
xm3_6 = round(Linen4_2(1, 1) + 0.98*(Linen5_2(1, 1)-Linen4_2(1, 1)));

Linem3_1_2 = [xm3_1 Line3(1, 2); xm3_1 Line3(2, 2)];
Linem3_2_2 = [xm3_2 Line3(1, 2); xm3_2 Line3(2, 2)];
Linem3_3_2 = [xm3_3 Line3(1, 2); xm3_3 Line3(2, 2)];
Linem3_4_2 = [xm3_4 Line3(1, 2); xm3_4 Line3(2, 2)];
Linem3_5_2 = [xm3_5 Line3(1, 2); xm3_5 Line3(2, 2)];
Linem3_6_2 = [xm3_6 Line3(1, 2); xm3_6 Line3(2, 2)];

xm4_1 = round(Linen6_2(1, 1) + 0.03*(Linen7_2(1, 1)-Linen6_2(1, 1)));
xm4_2 = round(Linen6_2(1, 1) + 0.22*(Linen7_2(1, 1)-Linen6_2(1, 1)));
xm4_3 = round(Linen6_2(1, 1) + 0.41*(Linen7_2(1, 1)-Linen6_2(1, 1)));
xm4_4 = round(Linen6_2(1, 1) + 0.58*(Linen7_2(1, 1)-Linen6_2(1, 1)));
xm4_5 = round(Linen6_2(1, 1) + 0.78*(Linen7_2(1, 1)-Linen6_2(1, 1)));
xm4_6 = round(Linen6_2(1, 1) + 0.98*(Linen7_2(1, 1)-Linen6_2(1, 1)));

Linem4_1_2 = [xm4_1 Line3(1, 2); xm4_1 Line3(2, 2)];
Linem4_2_2 = [xm4_2 Line3(1, 2); xm4_2 Line3(2, 2)];
Linem4_3_2 = [xm4_3 Line3(1, 2); xm4_3 Line3(2, 2)];
Linem4_4_2 = [xm4_4 Line3(1, 2); xm4_4 Line3(2, 2)];
Linem4_5_2 = [xm4_5 Line3(1, 2); xm4_5 Line3(2, 2)];
Linem4_6_2 = [xm4_6 Line3(1, 2); xm4_6 Line3(2, 2)];

ym1_4 = round(Line1(1, 2) - 0.18*(Linen1_1(1, 2)-Line1(1, 2)));
ym2_4 = round(Line1(1, 2) - 0.35*(Linen1_1(1, 2)-Line1(1, 2)));
ym3_4 = round(Line1(1, 2) - 0.50*(Linen1_1(1, 2)-Line1(1, 2)));
ym4_4 = round(Line1(1, 2) - 0.65*(Linen1_1(1, 2)-Line1(1, 2)));
ym5_4 = round(Line1(1, 2) - 0.80*(Linen1_1(1, 2)-Line1(1, 2)));
ym6_4 = round(Line1(1, 2) - 0.95*(Linen1_1(1, 2)-Line1(1, 2)));
ym7_4 = round(Line1(1, 2) - 1.10*(Linen1_1(1, 2)-Line1(1, 2)));
ym8_4 = round(Line1(1, 2) - 1.22*(Linen1_1(1, 2)-Line1(1, 2)));
ym9_4 = round(Line1(1, 2) - 1.35*(Linen1_1(1, 2)-Line1(1, 2)));
ym10_4 = round(Line1(1, 2) - 1.50*(Linen1_1(1, 2)-Line1(1, 2)));
ym11_4 = round(Line1(1, 2) - 1.65*(Linen1_1(1, 2)-Line1(1, 2)));

Linem1_4 = [Line1(1, 1) ym1_4; Line1(2, 1) ym1_4];
Linem2_4 = [Line1(1, 1) ym2_4; Line1(2, 1) ym2_4];
Linem3_4 = [Line1(1, 1) ym3_4; Line1(2, 1) ym3_4];
Linem4_4 = [Line1(1, 1) ym4_4; Line1(2, 1) ym4_4];
Linem5_4 = [Line1(1, 1) ym5_4; Line1(2, 1) ym5_4];
Linem6_4 = [Line1(1, 1) ym6_4; Line1(2, 1) ym6_4];
Linem7_4 = [Line1(1, 1) ym7_4; Line1(2, 1) ym7_4];
Linem8_4 = [Line1(1, 1) ym8_4; Line1(2, 1) ym8_4];
Linem9_4 = [Line1(1, 1) ym9_4; Line1(2, 1) ym9_4];
Linem10_4 = [Line1(1, 1) ym10_4; Line1(2, 1) ym10_4];
Linem11_4 = [Line1(1, 1) ym11_4; Line1(2, 1) ym11_4];

Dom(1).Loc = [Line1(1, 2) Linen1_1(1, 2)];
Dom(1).y = [ym1_1 ym2_1 ym3_1 ym4_1 ym5_1];
xt{1} = [xm1_1 xm1_2 xm1_3 xm1_4 xm1_5 xm1_6];
xt{2} = [xm2_1 xm2_2 xm2_3 xm2_4 xm2_5 xm2_6];
xt{3} = [xm3_1 xm3_2 xm3_3 xm3_4 xm3_5 xm3_6];
xt{4} = [xm4_1 xm4_2 xm4_3 xm4_4 xm4_5 xm4_6];
Dom(1).x = xt;

Dom(2).Loc = [Linen1_1(1, 2) Linen2_1(1, 2)];
Dom(2).y = [ym1_2 ym2_2 ym3_2 ym4_2 ym5_2];
xt{1} = [xm1_1 xm1_2 xm1_3 xm1_4 xm1_5 xm1_6];
xt{2} = [xm2_1 xm2_2 xm2_3 xm2_4 xm2_5 xm2_6];
xt{3} = [xm3_1 xm3_2 xm3_3 xm3_4 xm3_5 xm3_6];
xt{4} = [xm4_1 xm4_2 xm4_3 xm4_4 xm4_5 xm4_6];
Dom(2).x = xt;

Dom(3).Loc = [Linen2_1(1, 2) Linen3_1(1, 2)];
Dom(3).y = [ym1_3 ym2_3 ym3_3 ym4_3 ym5_3];
xt{1} = [xm1_1 xm1_2 xm1_3 xm1_4 xm1_5 xm1_6];
xt{2} = [xm2_1 xm2_2 xm2_3 xm2_4 xm2_5 xm2_6];
xt{3} = [xm3_1 xm3_2 xm3_3 xm3_4 xm3_5 xm3_6];
xt{4} = [xm4_1 xm4_2 xm4_3 xm4_4 xm4_5 xm4_6];
Dom(3).x = xt;

Aom(1).Loc = [ym7_4 ym6_4];
Aom(1).y = [ym7_4 ym6_4];
Aom(1).x = [xm1_5 xm1_6];
Aom(2).Loc = [ym11_4 ym1_4];
Aom(2).y = [ym11_4 ym10_4 ym9_4 ym8_4 ...
    ym7_4 ym6_4 ym5_4 ym4_4 ...
    ym3_4 ym2_4 ym1_4];
Aom(2).x = [xm2_5 xm2_6 xm3_1 xm3_2 xm3_3 ...
    xm3_4 xm3_5 xm3_6 xm4_1 xm4_2];
Aom(3).Loc = [ym11_4 ym1_4];
Aom(3).y = [ym11_4 ym10_4 ym9_4 ym8_4 ...
    ym7_4 ym6_4 ym5_4 ym4_4 ...
    ym3_4 ym2_4 ym1_4];
Aom(3).x = [xm4_5 xm4_6];

aw = ['A' 'B' 'C' 'D'];

for i = 1 : length(stats1)
    Answer(i).Loc = [];
    Answer(i).no = [];
    Answer(i).aw = []; 
end
for i = 1 : length(stats1)
    temp = stats1(i).Centroid; 
    for i1 = 1 : length(Dom)
        Loc = Dom(i1).Loc; 
        if temp(2) >= Loc(1) && temp(2) <= Loc(2)
            x = Dom(i1).x;
            y = Dom(i1).y;
            i_y = (i1-1)*20;
            for i2 = 1 : length(x)
                xt = x{i2};
                for i3 = 1 : length(xt)-1
                    if temp(1) >= xt(i3) && temp(1) <= xt(i3+1)
                        i_x = (i2-1)*5 + i3;
                        break;
                    end
                end
            end
            i_n = i_y + i_x;
            for i4 = 1 : length(y)-1
                if temp(2) >= y(i4) && temp(2) <= y(i4+1)
                    i_a = aw(i4);
                    break;
                end
            end
        end
    end
    Answer(i_n).Loc = [Answer(i_n).Loc; temp];
    Answer(i_n).no = i_n;
    Answer(i_n).aw = [Answer(i_n).aw i_a];
end

Loc1 = Aom(1).Loc;
x1 = Aom(1).x;
y1 = Aom(1).y;
Loc2 = Aom(2).Loc;
x2 = Aom(2).x;
y2 = Aom(2).y;
Loc3 = Aom(3).Loc;
x3 = Aom(3).x;
y3 = Aom(3).y;
% 科目字符串
strs = ['政治'; '语文'; '数学'; '物理'; '化学'; '外语'; '历史'; '地理'; '生物'];

for i = 1 : 3
    Bn(i).result = []; % 涂抹结果可以存储多个涂抹信息)
    Bn(i).Loc = []; % 位置(可以存储多个位置信息)
end
for i = 1 : length(stats2)
    temp = stats2(i).Centroid; 
    if temp(1) >= x1(1) && temp(1) <= x1(2) && ...
            temp(2) >= y1(1) && temp(2) <= y1(2)
        Bn(1).Loc = temp; 
        Bn(1).result = 1;
    end
    if temp(2) >= Loc2(1) && temp(2) <= Loc2(2)
        for i1 = 1 : length(x2)-1
            if temp(1) >= x2(i1) && temp(1) <= x2(i1+1)
                for i2 = 1 : length(y2)-1
                    if temp(2) >= y2(i2) && temp(2) <= y2(i2+1)
                        Bn(2).Loc = [Bn(2).Loc; temp]; 
                        Bn(2).result = [Bn(2).result; i2-1];
                    end
                end
            end
        end
    end
    if temp(2) >= Loc3(1) && temp(2) <= Loc3(2) && temp(1) >= x3(1) && temp(1) <= x3(2)
        for i1 = 1 : length(y3)-1
            if temp(2) >= y3(i1) && temp(2) <= y3(i1+1)
                Bn(3).Loc = [Bn(3).Loc; temp];
                Bn(3).result = [Bn(3).result; strs(i1, :)]; 
            end
        end
    end
end

if flag
    figure;
    imshow(Img); title('网格线生成', 'FontWeight', 'Bold');
    hold on;
    plot(Linem1_1(:, 1), Linem1_1(:, 2), 'r-', 'LineWidth', 1);
    plot(Linem2_1(:, 1), Linem2_1(:, 2), 'r-', 'LineWidth', 1);
    plot(Linem3_1(:, 1), Linem3_1(:, 2), 'r-', 'LineWidth', 1);
    plot(Linem4_1(:, 1), Linem4_1(:, 2), 'r-', 'LineWidth', 1);
    plot(Linem5_1(:, 1), Linem5_1(:, 2), 'r-', 'LineWidth', 1);
    
    plot(Linem1_2(:, 1), Linem1_2(:, 2), 'r-', 'LineWidth', 1);
    plot(Linem2_2(:, 1), Linem2_2(:, 2), 'r-', 'LineWidth', 1);
    plot(Linem3_2(:, 1), Linem3_2(:, 2), 'r-', 'LineWidth', 1);
    plot(Linem4_2(:, 1), Linem4_2(:, 2), 'r-', 'LineWidth', 1);
    plot(Linem5_2(:, 1), Linem5_2(:, 2), 'r-', 'LineWidth', 1);
    
    plot(Linem1_3(:, 1), Linem1_3(:, 2), 'r-', 'LineWidth', 1);
    plot(Linem2_3(:, 1), Linem2_3(:, 2), 'r-', 'LineWidth', 1);
    plot(Linem3_3(:, 1), Linem3_3(:, 2), 'r-', 'LineWidth', 1);
    plot(Linem4_3(:, 1), Linem4_3(:, 2), 'r-', 'LineWidth', 1);
    plot(Linem5_3(:, 1), Linem5_3(:, 2), 'r-', 'LineWidth', 1);
    
    plot(Linem1_4(:, 1), Linem1_4(:, 2), 'b-', 'LineWidth', 1);
    plot(Linem2_4(:, 1), Linem2_4(:, 2), 'b-', 'LineWidth', 1);
    plot(Linem3_4(:, 1), Linem3_4(:, 2), 'b-', 'LineWidth', 1);
    plot(Linem4_4(:, 1), Linem4_4(:, 2), 'b-', 'LineWidth', 1);
    plot(Linem5_4(:, 1), Linem5_4(:, 2), 'b-', 'LineWidth', 1);
    plot(Linem6_4(:, 1), Linem6_4(:, 2), 'b-', 'LineWidth', 1);
    plot(Linem7_4(:, 1), Linem7_4(:, 2), 'b-', 'LineWidth', 1);
    plot(Linem8_4(:, 1), Linem8_4(:, 2), 'b-', 'LineWidth', 1);
    plot(Linem9_4(:, 1), Linem9_4(:, 2), 'b-', 'LineWidth', 1);
    plot(Linem10_4(:, 1), Linem10_4(:, 2), 'b-', 'LineWidth', 1);
    plot(Linem11_4(:, 1), Linem11_4(:, 2), 'b-', 'LineWidth', 1);
    
    plot(Linem1_1_2(:, 1), Linem1_1_2(:, 2), 'r-', 'LineWidth', 1);
    plot(Linem1_2_2(:, 1), Linem1_2_2(:, 2), 'r-', 'LineWidth', 1);
    plot(Linem1_3_2(:, 1), Linem1_3_2(:, 2), 'r-', 'LineWidth', 1);
    plot(Linem1_4_2(:, 1), Linem1_4_2(:, 2), 'r-', 'LineWidth', 1);
    plot(Linem1_5_2(:, 1), Linem1_5_2(:, 2), 'r-', 'LineWidth', 1);
    plot(Linem1_6_2(:, 1), Linem1_6_2(:, 2), 'r-', 'LineWidth', 1);
    
    plot(Linem2_1_2(:, 1), Linem2_1_2(:, 2), 'r-', 'LineWidth', 1);
    plot(Linem2_2_2(:, 1), Linem2_2_2(:, 2), 'r-', 'LineWidth', 1);
    plot(Linem2_3_2(:, 1), Linem2_3_2(:, 2), 'r-', 'LineWidth', 1);
    plot(Linem2_4_2(:, 1), Linem2_4_2(:, 2), 'r-', 'LineWidth', 1);
    plot(Linem2_5_2(:, 1), Linem2_5_2(:, 2), 'r-', 'LineWidth', 1);
    plot(Linem2_6_2(:, 1), Linem2_6_2(:, 2), 'r-', 'LineWidth', 1);
    
    plot(Linem3_1_2(:, 1), Linem3_1_2(:, 2), 'r-', 'LineWidth', 1);
    plot(Linem3_2_2(:, 1), Linem3_2_2(:, 2), 'r-', 'LineWidth', 1);
    plot(Linem3_3_2(:, 1), Linem3_3_2(:, 2), 'r-', 'LineWidth', 1);
    plot(Linem3_4_2(:, 1), Linem3_4_2(:, 2), 'r-', 'LineWidth', 1);
    plot(Linem3_5_2(:, 1), Linem3_5_2(:, 2), 'r-', 'LineWidth', 1);
    plot(Linem3_6_2(:, 1), Linem3_6_2(:, 2), 'r-', 'LineWidth', 1);
    
    plot(Linem4_1_2(:, 1), Linem4_1_2(:, 2), 'r-', 'LineWidth', 1);
    plot(Linem4_2_2(:, 1), Linem4_2_2(:, 2), 'r-', 'LineWidth', 1);
    plot(Linem4_3_2(:, 1), Linem4_3_2(:, 2), 'r-', 'LineWidth', 1);
    plot(Linem4_4_2(:, 1), Linem4_4_2(:, 2), 'r-', 'LineWidth', 1);
    plot(Linem4_5_2(:, 1), Linem4_5_2(:, 2), 'r-', 'LineWidth', 1);
    plot(Linem4_6_2(:, 1), Linem4_6_2(:, 2), 'r-', 'LineWidth', 1);
    hold off;
    set(gcf, 'units', 'normalized', 'position', [0 0 1 1]);
    figure;
    imshow(Img); title('结果分析标记', 'FontWeight', 'Bold'); hold on;
    for i = 1 : length(Answer)
        if ~isempty(Answer(i).Loc)
            tempi = Answer(i).Loc; 
            awi = Answer(i).aw;
            for j = 1 : size(tempi, 1)
                tempij = tempi(j, :);
                awij = awi(j);
                text(tempij(1), tempij(2), awij, 'color', 'b');
            end
        end
    end
    Err = [0 0 0];
    if ~isempty(Bn(1).Loc)
        tempi = Bn(1).Loc;
        resulti = Bn(1).result;
        for j = 1 : size(tempi, 1)
            tempij = tempi(j, :);
            resultij = resulti(j, :);
            text(tempij(1), tempij(2), num2str(resultij), 'color', 'b');
        end
    else
        Err(1) = 1;
    end
    if ~isempty(Bn(2).Loc)
        tempi = Bn(2).Loc;
        resulti = Bn(2).result;
        for j = 1 : size(tempi, 1)
            tempij = tempi(j, :);
            resultij = resulti(j, :);
            text(tempij(1), tempij(2), num2str(resultij), 'color', 'b');
        end
        if size(tempi, 1) ~= 9
            Err(2) = 1;
        end
    else
        Err(2) = 1;
    end
    if ~isempty(Bn(3).Loc)
        tempi = Bn(3).Loc; 
        resulti = Bn(3).result; 
        for j = 1 : size(tempi, 1)
            tempij = tempi(j, :);
            resultij = resulti(j, :);
            text(tempij(1), tempij(2), num2str(resultij), 'color', 'b');
        end
        if size(tempi, 1) ~= 1
            Err(3) = 1;
        end
    else
        Err(3) = 1;
    end
    hold off;
    set(gcf, 'units', 'normalized', 'position', [0 0 1 1]);
    if Err(1)
        msgbox('试卷类型报警!', '提示信息', 'modal');
    end
    if Err(2)
        msgbox('准考证报警,请检查是否涂抹正确!', '提示信息', 'modal');
    end
    if Err(3)
        msgbox('考试科目报警!', '提示信息', 'modal');
    end    
end